﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BUS;
using DTO;
using System.Text.RegularExpressions;

namespace FastDeal.Control
{
    public partial class wuc_ThemKhuyenMai : System.Web.UI.UserControl
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            //Kiểm tra đăng nhập của user
            if (Session["DaDangNhap"] == null || (bool)Session["DaDangNhap"] == false)
            {
                Response.Redirect("~/Default/aspx");
            }
            else if ((int)Session["LoaiThanhVien"] != 3 && (int)Session["LoaiThanhVien"] != 1)
            {
                Response.Redirect("~/Default.aspx");
            }
            else
            {
                if (!IsPostBack)
                {
                    LoadLoaiKhuyenMai();
                    LoadDiaPhuong();
                    Page.Title = "Thêm khuyến mãi mới - oh!Mua";
                }
                lbThongBao.Text = String.Empty;
            }
        }


        /// <summary>
        /// Hàm load danh sách địa phương lên combobox địa phương
        /// </summary>
        private void LoadDiaPhuong()
        {
            DiaPhuong_BUS db = new DiaPhuong_BUS();
            List<DiaPhuong> list = new List<DiaPhuong>();
            list = db.LayDanhSach_DiaPhuong();
            ddlDiaPhuong.DataSource = list;
            ddlDiaPhuong.DataTextField = "TenDiaPhuong";
            ddlDiaPhuong.DataValueField = "MaDiaPhuong";
            ddlDiaPhuong.DataBind();
        }


        /// <summary>
        /// Load danh sách loại khuyến mãi
        /// </summary>
        private void LoadLoaiKhuyenMai()
        {
            LoaiKhuyenMai_BUS db = new LoaiKhuyenMai_BUS();
            List<LoaiKhuyenMai> list = new List<LoaiKhuyenMai>();
            list = db.LayDanhSach_LoaiKhuyenMai();
            ddlLoaiKhuyenMai.DataSource = list;
            ddlLoaiKhuyenMai.DataValueField = "MaLoaiKhuyenMai";
            ddlLoaiKhuyenMai.DataTextField = "TenLoaiKhuyenMai";
            ddlLoaiKhuyenMai.DataBind();
        }

        protected void btnOK_Click(object sender, EventArgs e)
        {
            try
            {
                ThemKhuyenMai();
                System.Web.HttpContext.Current.Response.Write("<SCRIPT language='javascript'>alert('Thêm Thành Công và Chờ Kiểm Duyệt Của Quản Trị!')</SCRIPT>");
                Page_Load(sender, e);
            }
            catch
            {
                System.Web.HttpContext.Current.Response.Write("<SCRIPT language='javascript'>alert('Lỗi xảy ra, vui lòng kiểm tra lại hoặc chờ trong ít phút!')</SCRIPT>");
            }
            
        }


        /// <summary>
        /// Phương thức thêm khuyến mãi dựa vào 
        /// </summary>
        private void ThemKhuyenMai()
        {
            try
            {
                if (KiemTraDuLieuNhap() == true)
                {
                    //Lấy thông tin của userID của username đăng nhập
                    KhuyenMai khuyenmai = new KhuyenMai();
                    KhuyenMai_BUS db = new KhuyenMai_BUS();

                    //Lấy dữ liệu từ các control
                    khuyenmai.TenKhuyenMai = txtTenKhuyenMai.Text;
                    khuyenmai.DiemNoiBat = txtDiemNoiBat.Text;
                    khuyenmai.DieuKien = txtDieuKien.Text;
                    khuyenmai.NoiDung = txtNoiDung.Text;
                    khuyenmai.TomTat = txtTomTat.Text;
                    khuyenmai.GiaKhuyenMai = double.Parse(txtGiaKhuyenMai.Text);
                    khuyenmai.GiaGoc = double.Parse(txtGiaGoc.Text);
                    khuyenmai.SoLuongToiThieu = int.Parse(txtSoLuongToiThieu.Text);
                    khuyenmai.ThoiGianBatDau = DateTime.Parse(txtThoiGianBatDau.Text);
                    khuyenmai.ThoiGianKetThuc = DateTime.Parse(txtThoiGianKetThuc.Text);
                    khuyenmai.TongSoNguoiMua = 0;
                    khuyenmai.MaLoaiKhuyenMai = int.Parse(ddlLoaiKhuyenMai.SelectedValue.ToString());
                    khuyenmai.MaDoanhNghiep = int.Parse(Session["UserID"].ToString());
                    khuyenmai.TinhTrang = 0;
                    khuyenmai.isDelete = 0;
                    db.Them_KhuyenMai(khuyenmai);

                    //Thêm hình ảnh vào trong csdl
                    //-> Lấy mã khuyến mãi mới thêm vào bỏ vào trong csdl
                    KhuyenMai_BUS db2 = new KhuyenMai_BUS();
                    List<KhuyenMai> list = new List<KhuyenMai>();
                    list = db2.LayDanhSach_KhuyenMai();
                    KhuyenMai km = new KhuyenMai();
                    km = list[list.Count - 1];
                    KhuyenMai_HinhAnh_BUS db3 = new KhuyenMai_HinhAnh_BUS();
                    KhuyenMai_HinhAnh khuyenmaihinhanh = new KhuyenMai_HinhAnh();
                    khuyenmaihinhanh.MaKhuyenMai = km.MaKhuyenMai;
                    khuyenmaihinhanh.ChuThichHinh = khuyenmai.TenKhuyenMai;
                    khuyenmaihinhanh.LoaiHinh = 1;
                    ////Lấy mã hình ảnh mới nhất + 1 -> mã hình ảnh mới 
                    //List<KhuyenMai_HinhAnh> listKhuyenMaiHinhAnh = new List<KhuyenMai_HinhAnh>();
                    //listKhuyenMaiHinhAnh = db3.LayDanhSach_KhuyenMai_HinhAnh();
                    //khuyenmaihinhanh.MaHinhAnh = listKhuyenMaiHinhAnh[listKhuyenMaiHinhAnh.Count - 1].MaHinhAnh + 1;


                    db3.Them_KhuyenMai_HinhAnh(khuyenmaihinhanh);


                    //Thêm hình ảnh
                    KhuyenMai_HinhAnh_BUS db4 = new KhuyenMai_HinhAnh_BUS();
                    List<KhuyenMai_HinhAnh> list3 = new List<KhuyenMai_HinhAnh>();
                    list3 = db4.LayDanhSach_KhuyenMai_HinhAnh();
                    KhuyenMai_HinhAnh kmha = new KhuyenMai_HinhAnh();
                    kmha = list3[list3.Count - 1];

                    HinhAnh_BUS db5 = new HinhAnh_BUS();
                    HinhAnh ha = new HinhAnh();
                    ha.LoaiHinh = 1;
                    ha.MaHinhAnh = kmha.MaHinhAnh;
                    ha.DuongDan = txtLinkHinh1.Text;
                    ha.isDelete = 0;
                    db5.Them_HinhAnh(ha.MaHinhAnh, ha.DuongDan, int.Parse(ha.LoaiHinh.ToString()));

                    ha.DuongDan = txtLinkHinh2.Text;
                    ha.LoaiHinh = 0;
                    db5.Them_HinhAnh(ha.MaHinhAnh, ha.DuongDan, int.Parse(ha.LoaiHinh.ToString()));
                     
                    ha.DuongDan = txtLinkHinh3.Text;
                    db5.Them_HinhAnh(ha.MaHinhAnh, ha.DuongDan, int.Parse(ha.LoaiHinh.ToString()));
                    
                    //Thêm địa điểm vào trong csdl
                    DiaDiem_BUS dbDiaDiem = new DiaDiem_BUS();
                    DiaDiem diadiem = new DiaDiem();
                    diadiem.TenDiaDiem = txtTenDiaDiem.Text;
                    diadiem.SoNha = txtSoNha.Text;
                    diadiem.TenDuong = txtDuong.Text;
                    diadiem.Phuong = txtPhuong.Text;
                    diadiem.Quan = txtQuan.Text;
                    diadiem.MaDiaPhuong = int.Parse(ddlDiaPhuong.SelectedValue.ToString());
                    diadiem.DienThoai = txtDienThoai.Text;
                    diadiem.KinhDo = txtKinhDo.Text;
                    diadiem.ViDo = txtViDo.Text;
                    diadiem.isDelete = 0;
                    dbDiaDiem.Them_DiaDiem(diadiem);

                    //Thêm vào trong bảng địa điểm_ khuyến mãi
                    //---> Lấy danh sách địa điểm thêm vào trong csdl -> lấy thằng cuối cùng trong danh sách địa điểm
                    List<DiaDiem> listDiaDiem = new List<DiaDiem>();
                    listDiaDiem = dbDiaDiem.LayDanhSach_DiaDiem();
                    DiaDiem diadiem1 = new DiaDiem();
                    diadiem1 = listDiaDiem[listDiaDiem.Count - 1];

                    DiaDiem_KhuyenMai_BUS dbDiaDiemKhuyenMai = new DiaDiem_KhuyenMai_BUS();
                    DiaDiem_KhuyenMai diadiemkhuyenmai = new DiaDiem_KhuyenMai();
                    diadiemkhuyenmai.MaDiaDiem = diadiem1.MaDiaDiem;
                    diadiemkhuyenmai.MaKhuyenMai = km.MaKhuyenMai; //mã khuyến mãi này lấy ở trên (là km mới thêm vào )
                    diadiemkhuyenmai.isDelete = 0;
                    dbDiaDiemKhuyenMai.Them_DiaDiem_KhuyenMai(diadiemkhuyenmai);
                    lbThongBao.Text = String.Empty;
                }
                else
                {
                    lbThongBao.Text = "Lỗi trong quá trình thực hiện";
                }
            }
            catch (Exception ex)
            {

            }
        }

        /// <summary>
        /// Hàm kiểm tra dữ liệu người dùng nhập vào các textbox
        /// </summary>
        /// <returns></returns>
        private bool KiemTraDuLieuNhap()
        {
            if (double.Parse(txtGiaGoc.Text) < double.Parse(txtGiaKhuyenMai.Text))
            {
                lbGiaKhuyenMai.Text = "Giá KM phải nhỏ hơn giá gốc";
                return false;
            }
            else
                lbGiaKhuyenMai.Text = string.Empty;


            if (int.Parse(txtSoLuongToiThieu.Text) > int.Parse(txtSoLuongToiDa.Text))
            {

                lbSoLuongToiThieu.Text = "SL tối thiểu phải nhỏ hơn SL tối đa";
                return false;
            }
            else
                lbSoLuongToiThieu.Text = string.Empty;

            if (DateTime.Parse(txtThoiGianBatDau.Text) < DateTime.Now)
            {

                lbThoiGianBatDau.Text = "Thời gian bắt đầu phải là ngày trong tương lai";
                return false;
            }
            else
                lbThoiGianBatDau.Text = string.Empty;

            if (DateTime.Now > DateTime.Parse(txtThoiGianKetThuc.Text))
            {

                lbThoiGianKetThuc.Text = "Thời gian kết thúc phải là ngày trong tương lai";
                return false;
            }
            else
                lbThoiGianKetThuc.Text = string.Empty;

            if (DateTime.Parse(txtThoiGianBatDau.Text) > DateTime.Parse(txtThoiGianKetThuc.Text))
            {

                lbThoiGianKetThuc.Text = "Thời gian bắt đầu phải trước thời gian kết thúc";
                return false;
            }
            else
                lbThoiGianKetThuc.Text = string.Empty;

            
            return true; 
        }
    }
}